判斷陣列中是否有重複元素
input1 = [1,2,3,1]
output1 = true
input2 = [1,2,3,4]
output2 = false
input3 = [1,1,1,3,3,4,3,2,4,2]
output3 = true
用 filter 傳入 元素本身與其索引給匿名函式做判斷,如果在這一次的判斷中,該元素的索引不等於傳入的 index 就去除它( indexOf 只會傳出第一個重複元素的索引) ,比較處理前後陣列長度,最後是我寫的簡單判斷
function anyDuplicate(ary){
a = ary.filter( (x,index)=> { return ary.indexOf(x) == index})
return !(ary.length == a.length)
}
function expect(a,b){
console.log(a===b)
}
expect(anyDuplicate(input1),output1)
expect(anyDuplicate(input2),output2)
expect(anyDuplicate(input3),output3)
開始覺得有測試是件好事,執行之後可以看到 true or false ,不需要用肉眼一一判斷,只需要關注哪些成功哪些失敗,在調整程式,如果有足夠多的測試、案例、要求,程式就會越來越穩定
今天到此為止,有任何問題請在下方留言或透過email、GitHub聯絡我,感謝閱讀
Daily kitty